#ifndef __SOC_TIMER_H__
#define __SOC_TIMER_H__

#include "../soc_comm.h"

void SOC_TimerInit(SOC_TimerNo_t no, uint32_t us);
void SOC_TimerSetTimeOut(SOC_TimerNo_t no, uint32_t us);
void SOC_TimerReload(SOC_TimerNo_t no);
void SOC_TimerStart(SOC_TimerNo_t no);
void SOC_TimerStop(SOC_TimerNo_t no);

void SOC_SetTimerOutCallBack(SOC_TimerNo_t no, SOC_IT_CALLBACK cb);

// void SOC_RaiseTimeOutEventFromISR(SOC_TimerNo_t no);
//内部调用 [因为C51出重入原因，这里使用宏定义]
extern uint16_t m_timerCounts[];

#define SOC_RaiseTimeOutEventFromISR(no) do{\
        SOC_Timer##no##_TimeOutCallBack();\
        TH##no = (65536-m_timerCounts[no])>>8;\
        TL##no = 65536-m_timerCounts[no]; \
    }while(0)

#endif